home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ian & Stuart's Australian Mac: Not for Sale
/
Another.not.for.sale (Australia).iso
/
fade into you
/
being there
/
Issues & Ideas
/
SGML
/
arch-form.catalog
next >
Wrap
Text File
|
1992-07-21
|
122KB
|
2,293 lines
Catalog of HyTime Architectural Forms
and HyTime SGML Specification
Version 2.0, June 28, 1993
By Charles F. Goldfarb
This document contains an unofficial compilation of the formal SGML
specifications from the HyTime Standard (ISO/IEC 10744:1992),
cross-referenced to the text that describes them, and with known
errors corrected. The current version expands on the original by
including the formal specifications of useful element types,
notations, and instances from Annex A. of the standard. The material
in this document is excerpted from the pre-publication review edition
of "The HyTime Handbook", which I hope will be available for limited
distribution in the fall of 1993.
1. COPYRIGHT AND LICENSES
This document is distributed in both printed and machine-readable
form. It contains formal SGML specifications derived from ISO/IEC
10744, and additional text and cross-references from The HyTime
Handbook. The document as a whole is subject to the following
copyright notice and license:
(C) Charles F. Goldfarb 1993.
Permission to copy in any form is granted for use with
conforming HyTime systems and applications as defined in
ISO/IEC 10744, provided that all copies are accurate and
complete in every respect, including this notice.
The above license is intended to encourage the dissemination of the
formal SGML specifications, while assuring that essential information
about variations from the text of the standard (see below) is
disseminated with them.
The formal SGML specifications are individually subject to the
following copyright notice and license:
(C) International Organization for Standardization 1992.
Permission to copy in any form is granted for use with
conforming HyTime systems and applications as defined in
ISO/IEC 10744, provided this notice is included in all copies.
The above license is intended to facilitate the use of the formal SGML
specifications as a base for developing HyTime applications
(particularly when distributed in machine-readable form).
2. INTRODUCTION TO THE CATALOG
The formal SGML specifications that define the architectural forms
appear in the same order as in ISO/IEC 10744. At the right margins of
the headings that identify the forms are supplementary comments that
identify the clause number and page number of ISO/IEC 10744 where the
forms are defined. For example, the line:
<!-- Property Name --> <!--06.7.2 36-->
introduces the "property name" element type form, which is described
in clause 6.7.2, which begins on page 36. Consult the standard for
the notation and conventions used, which indicate the
interrelationships of the forms and their mandatory or non-mandatory
status.
An uppercase heading identifies the HyTime module in which the
following architectural forms occur. For example, the
forms of the measurement module are introduced by the heading:
<!-- MEASUREMENT --> <!--07 38-->
The specifications from Annex A are presented similarly, except that
the first-level headings are treated as the equivalent of module
names.
3. CORRECTIONS IN THIS VERSION
Although International Standards are subjected to extensive review and
proofreading, early users frequently discover errors. These are
reported to the Project Editor for eventual consideration by the
responsible standards committee, after which "corrigenda" may be
published to correct the errors officially.
Several errors and ambiguities have already been reported; the
proposed corrections and clarifications (hereinafter simply
"corrections") for some of them are reflected in this document. While
it must be stressed that the corrections are not official (and
theoretically might never be), they are of such a nature that they are
highly likely to be accepted. Corrections affecting only the text of the
standard (that is, not the formal SGML specifications included in parts
4 and 5 of this document) are preceded with a currency sign ($).
Corrections added in this version of this Catalog are:
00.1 $In "Measurement module" list item: Change
"finite coordinate space" to "scheduling".
06.3.1 $Last paragraph: change "HyTime" to 'the second "HyTime"'.
06.4 $After Note 79 add new para: An element of a type for which the
"HyTime" attribute is not defined is a "non-HyTime element:";
it has no HyTime architectural form and therefore cannot affect
conformance to the meta-DTD. Both HyTime and non-HyTime
elements can occur in its content.
06.4 %resorce: delete from %HyBrid and add to HyDoc inclusions. (Note:
inclusion group is now too large for reference concrete syntax,
but DTDs can use other means to specify where resources occur.)
06.4.1 HyBrid: delete inclusion group.
06.4.2 nHyTime: change to "sHyTime" ("suppress HyTime element");
only attributes of nested sHyTime elements are processed.
06.4.2 $sHyTime: delete 2nd paragraph and Note 86.
06.5.2 $lexmodel: attribute should be "lexical model element type GIs
(lextypgi).
06.5.2.1 $lexmodel: requires support of "lextype" option.
06.5.5.2 dvlist: change "attlist" to "attspecs".
06.6.2 $Second para: change "HyTime NAME nHyTime" to "HyTime
architectural form (HyTime)"; move existing last sentence
of 2nd para to become last sentence of 1st para; add new
last sentence of 2nd para: The value of the "HyTime"
attribute indicates whether the entity is to be treated as data
or parsed as an SGML document, subdocument, or text entity.
06.6.2 "HyTime" attribute was omitted from formal SGML specification.
06.6.2 $altreps: need not use different data content notations.
06.6.2 insbento: offset changed to "origin 1" like (dimspec).
07.1.1 $Note 142: change "qcnt" to "quantum count".
07.4.1.2 elemref: add "calspec" to reftype group.
08.2.1 locsrc: default value changed to "#CURRENT".
08.3.2.2 nametype: default value changed to "entity".
08.3.2.2 obnames: default value changed to "nobnames".
08.4.1 $Add to 4th para: During concatenation, data content of elements
that occur in element content is separated from the data content
of siblings by a SPACE character.
08.4.1 catsrce and catres: add additional keywords (catsrcsp and catressp)
to indicate when a SPACE character is inserted at each
concatenation point.
08.4.2.2 $dataobj: in definition, change "an entity" to "a data entity".
08.4.2.7 $document position: There are two document position properties,
for pathloc and treeloc. The marker list contains positive
markers only.
08.5.2 notloc: in comment, change "address" to "HyTime address".
09.2.1 linkends: clarifies that one can be omitted, in which case
the ilink is the first anchor (for clink compatibility).
09.2.1 ilink: Clarify reftype constraint comment.
09.2.2 clink: Clarify reftype constraint comment.
10.2 fcs: multiple FCS elements of same element type describe different
spaces unless they have the same "fcsname" attribute (which
requires the "splitfcs" option).
10.3 axisord: omitted axis name means all events occupy full dimension.
10.7 impfcs: type of imposed FCS; change "IDREF" to "NAME".
10.8.1 calspec: respecify content model to remove ambiguity.
A.1.3 arg: balance parentheses.
A.1.3 ATTORCON: balance parentheses.
A.1.3 qpn: balance parentheses.
A.2 HyPD qltnlmgi: "gil" changed to "GIL".
A.2.1.2.2 docpos: clarify as "pathloc document position" and add
docpostl: treeloc document position
A.2.1.2.3 KEYWORD: psn=HTsem3; add definition.
A.2.1.2.3 tag: psn=HTsem3.
A.3.1 $HyQ: Add after 4th para: Query args, operands, and other nl nodes
are evaluated as they are ordered (left to right), and before the
query (or operator or other nl) is evaluated.
A.3.2 $HyQ: Formal definition should be in HyLex (contributions welcomed).
A.3.2 @lc: definition changed to "Value of attribute defined elsewhere"
A.3.2 Delete informal heading "-- HyQ --" and number others A.3.2.1-9.
A.3.2.1 dquery, iquery: allow qdomain without args.
A.3.2.1 qdomain: correct second comment.
A.3.2.1 args: should allow nl as well as nodes.
A.3.2.4 union: clarify description of result nl.
A.3.2.4 inter: clarify description of result nl.
A.3.2.4 diff: eliminate ambiguity between diff and symmetric diff.
A.3.2.6 hylex: balance single quotes.
A.3.2.7 Forall: clarify argument query applies to each nl node in order.
A.3.2.8 Compare: delete comma after "@quantum?".
A.3.2.8 ordered: clarify that overlap refers to position.
A.3.3 HyQ qltnlmgi: "gil" changed to "GIL".
A.5.2.5 Chain: change "feet" to "foot".
Corrections added in Version 1.0 are:
06.5.7 Actypes: changed "S+" to "s+".
08.4.2.3 Erroneous title "Tree Locations" changed to "Node Locations".
09.2.1 Anchrole: NAMES changed to CDATA because of RNI.
09.2.2 Clink: Deleted erroneous constraint comment for element.
10.2 Module heading "Scheduling" added.
10.2 Axisdefs: "gil" changed to "GIL".
10.3 Axisord: "gil" changed to "GIL".
General Left-aligned heading/title comments were centered.
4. ARCHITECTURAL FORMS
<!-- BASE MODULE --> <!--06 12-->
<!-- HyTime Document --> <!--06.4 18-->
<!ENTITY % loc -- Location address architectural forms --
"bibloc|nameloc|dataloc|treeloc|pathloc|listloc|relloc|proploc|notloc|fcsloc">
<!ENTITY % link -- Hyperlink architectural forms --
"clink|ilink">
<!ENTITY % resbase -- Resource architectural forms: base module --
"activity|dvlist|desctab|lexmodel|lexord|propdef|qltn|qpn">
<!ENTITY % resmeas -- Resource architectural forms: measurement module --
"dimspec|extent|extlist|dimref|markfun|measure">
<!ENTITY % resschd -- Resource architectural forms: scheduling module --
"axis|exrecon|calspec|mallobj">
<!ENTITY % resrend -- Resource architectural forms: rendition module --
"rendrule|batrule|modrule|wandrule|wndpatch|modpatch">
<!ENTITY % resorce -- Resource architectural forms: all modules --
"(%resbase;)|(%resmeas;)|(%resschd;)|(%resrend;)">
<!ENTITY % HyBrid -- HyBrid content (for use in content models) --
"fcs|HyBrid|sHyTime|#PCDATA"
>
<!element HyDoc -- HyTime document element --
- O (%HyBrid;)* +(%loc;|%link;|%resorce;) >
<!attlist HyDoc HyTime -- HyTime architectural form --
-- Unique value specified by standard
for each element type form --
NAME HyDoc
id ID #IMPLIED -- Default: none --
boslevel -- Bounding level of HyTime bounded object set when
document is a hub; overridable at run time --
-- Constraint: 0=no limit; 1=root; 2 to N --
NUMBER #IMPLIED -- Default: application BOS --
unmspace -- Unified name space for IDs and entities --
(unified|separate) separate
-- docmdu attributes --
>
<!-- HyTime/non-HyTime Bridge Element --> <!--06.4.1 20-->
<!element HyBrid -- HyTime/non-HyTime bridge element --
-- Bridge between HyTime and non-HyTime elements --
- O (%HyBrid;)* >
<!attlist HyBrid HyTime NAME HyBrid >
<!-- Suppress HyTime Element --> <!--06.4.2 20-->
<!element sHyTime -- Suppress HyTime element --
-- Establishes "no HyTime processing" mode for all levels
of its content, except for attributes of nested sHyTime
elements --
- O ANY >
<!attlist sHyTime HyTime NAME sHyTime >
<!-- Identification --> <!--06.5.1 21-->
<!attlist all-id
id -- SGML unique identifier --
ID #IMPLIED -- Default: none --
notation -- Data content notation --
NAME #IMPLIED -- Default: none --
delims -- Data content notation delimiter changes --
-- Constraint: names are delimiter role names --
-- Constraint: a given NAME can occur only once --
-- lextype( (NAME, s+, char*),
(s+, NAME, s+, char*)* ) --
CDATA #IMPLIED -- Default: not changed --
conloc -- Content location (if not in syntactic content) --
-- Constraint: data or element that satisfies
this element's content model, or element whose
content satisfies this element's content model.--
IDREFS #CONREF -- Default: syntactic content --
context -- Contextual content --
(context|ncontext) ncontext
HyNames -- User names for HyTime attributes --
-- Constraint: a given ATTNAME or #CONTENT
can occur only once --
-- lextype(ATTNAME, s+, (NAME|(RNI,"CONTENT")),
(s+, ATTNAME, s+, (NAME|(RNI,"CONTENT")))*) --
CDATA #FIXED "" -- Default: none --
>
<!-- Lexical Types --> <!--06.5.2 22-->
<!attlist all-lex
lextype -- Lexical types of attribute values
or character data content --
-- Constraint: a given ATTNAME or #CONTENT
can occur only once; a qltn must be an ltn of a
lexmodel whose GI is specified in lextypgi --
-- lextype(ATTORCON, s+, QLTN,
(s+, ATTORCON, s+, QLTN)*) --
CDATA #FIXED "" -- Default: none defined --
lextypgi -- Lexical model element types used by lextype --
-- Constraint: searched in order listed; must
be GIs of lexmodel form element types --
-- lextype(GIL) --
NAMES #FIXED in-DTD
>
<!-- Lexical Model --> <!--06.5.2.1 23-->
<!element lexmodel -- Lexical model --
- O (%HyBrid;)* >
<!attlist lexmodel HyTime NAME lexmodel
ltn -- Lexical type name --
-- Constraint: unique in element type --
NAME #REQUIRED
lexord -- Lexicographic ordering for comparisons --
-- reftype(lexord) --
-- lextype(IDREF|(RNI,"SGMLCASE")) --
CDATA #IMPLIED -- Default: character set order--
boundary -- Hit boundary constraint --
(sodeod|sodiec|isceod|isciec|inmodel) sodeod
>
<!-- Lexicographic Ordering Definition --> <!--06.5.2.2 24-->
<!element lexord -- Lexicographic Ordering Definition --
- O (grapheme+) >
<!attlist lexord HyTime NAME lexord
id ID #REQUIRED
>
<!element grapheme -- Grapheme comparison key --
- O (%HyBrid;)* >
<!attlist grapheme HyTime NAME grapheme
gs -- Grapheme string (case-sensitive) --
-- Constraint: must be unique in lexord --
CDATA #REQUIRED
gck -- Grapheme comparison key --
NUMBERS #IMPLIED -- Default: ignored in compare --
>
<!-- ID Reference Resolution Control --> <!--06.5.3 24-->
<!attlist all-ref
refrange -- ID reference resolution range --
-- B Backward reference to identified local element
D Identified local element, before or after
I Location address allowed
X Indirect target, external to reference --
-- Attribute declared value or lextype is IDREF --
-- Constraint: a given ATTNAME or #CONTENT
can occur only once --
-- lextype( (RNI,"ALL", s+, ("B"|"D"|"I"|"X"))?,
(s+, ATTORCON,
s+, ("B"|"D"|"I"|"X"))* ) --
CDATA #FIXED "#ALL I"
reflevel -- ID reference resolution level --
-- Level that IDREF resolution cannot exceed,
relative to this element. --
-- lextype( (RNI,"ALL", s+, unzi)?,
(s+, ATTORCON, s+, unzi)* ) --
CDATA #IMPLIED -- Default: resolve fully --
reftype -- ID reference element type --
-- Attribute declared value or lextype is IDREF --
-- Constraint: a given ATTNAME or #CONTENT can occur
only once; types apply to locations, not to
intermediate location address elements --
-- lextype(
(RNI,"ALL", s+,
(((GI|unzi), (s+, RNI,"SEQ")?)|(RNI,"ANY")))?,
(s+, ATTORCON, s+,
(((GI|unzi), (s+, RNI,"SEQ")?)|(RNI,"ANY")))*)--
CDATA #FIXED "#ALL #ANY"
>
<!-- Bit Combination Skip Count --> <!--06.5.4 27-->
<!attlist all-bits
bitskip -- Number of unparsed bit combinations
to skip till end of element --
NUMBERS #IMPLIED -- Default: not known --
>
<!-- Default Value List Attributes --> <!--06.5.5.1 27-->
<!attlist all-dvl
subdvl -- Subelement impliable attribute value defaults --
-- reftype(dvlist) --
IDREFS #IMPLIED -- Default: none --
sibdvl -- Sibling impliable attribute value defaults --
-- reftype(dvlist) --
IDREFS #IMPLIED -- Default: none --
>
<!-- Default Value List --> <!--06.5.5.2 28-->
<!element dvlist -- Default value list --
- O (#PCDATA) -- ulextype(attspec) -->
<!attlist dvlist HyTime NAME dvlist
id ID #REQUIRED
dvgi -- Default value element types --
-- Applies to all elements if omitted --
-- lextype(GIL) --
NAMES #IMPLIED -- Default: all elements --
preatts -- Attributes whose values are to be preempted --
-- Constraint: must be in dvlist content --
NAMES #IMPLIED -- Default: none --
>
<!-- Descriptive Text Attributes --> <!--06.5.6.1 29-->
<!attlist all-desc
desctxt -- Descriptive text --
-- If specified, its descdef in desctab is treated
by HyTime as the element or as its content. --
-- lextype(words) --
CDATA #CONREF -- Default: none --
desctab -- Current description tables --
-- Constraint: searched in order listed --
-- reftype(desctab) --
IDREFS #CURRENT
>
<!-- Description Table --> <!--06.5.6.2 29-->
<!element desctab -- Descriptive text definition table --
- O (desctxt, descdef)+ >
<!attlist desctab HyTime NAME desctab
id ID #REQUIRED >
<!-- Descriptive Text --> <!--06.5.6.3 30-->
<!element desctxt -- Descriptive text --
O O (#PCDATA) -- lextype(words) -->
<!attlist desctxt HyTime NAME desctxt >
<!-- Descriptive Text Definition --> <!--06.5.6.4 30-->
<!element descdef -- Descriptive text definition --
O O (%HyBrid;)* >
<!attlist descdef HyTime NAME descdef >
<!-- Activity Tracking Policy --> <!--06.5.7 30-->
<!attlist all-act
activity -- Activity tracking policy for this element --
-- reftype(activity) --
IDREFS #IMPLIED -- Default: none --
>
<!element activity -- Activity tracking policy --
- O (%HyBrid;)* >
<!attlist activity HyTime NAME activity
id ID #REQUIRED
actypes -- Activity types to which policy applies --
-- lextype(("CREATE"|"MODIFY"|"LINK"
|"ACCESS"|"UNLINK"|"DELETE"),
(s+, ("CREATE"|"MODIFY"|"LINK"
|"ACCESS"|"UNLINK"|"DELETE"))*) --
NAMES access
>
<!-- HyTime Data Attributes --> <!--06.6 32-->
<!-- Standard Bento Entity for Natural Transport of Objects -->
<!--06.6.1 32-->
<!-- Common Data Attributes --> <!--06.6.2 32-->
<!attlist #NOTATION sbento -- Attributes of sbento data content notation type--
-- Creates container by partitioning storage object
so several entities can store data in it. --
HyTime NAME sbento
unitsize -- Sbento partitioning unit size (bits per unit) --
NUMBER 8
>
<!attlist #NOTATION any-dcn -- use: sbento sHyTime --
-- Common attributes of data content notations --
-- Any or all can be defined for a notation.
Notation-specific alternatives can be used. --
HyTime -- Architectural form of notation: data, SGML
document, SGML subdocument, or SGML text. --
(data|document|subdoc|text) data
nsbento -- Location of this entity in a sbento's storage --
-- External identifier of entity must be same as on
sbento entity so SDIF will not duplicate data --
-- ENTITY: sbento entity in which this occurs.
Digit+: Offset in sbento units (origin 1).
Digit+: Size in sbento units.
Offset/size repeatable for segmentation --
-- lextype(ENTITY, (s+, digit+, s+, digit+)+) --
CDATA #IMPLIED -- Default: not in a sbento --
modgen -- Modification generation --
-- Constraint: two numbers --
-- 1st: 0 when created; incremented when modified.
2nd: Set to 1st when validated by application. --
NUMBERS #IMPLIED -- Default: not tracked --
altreps -- Alternative representations of this entity --
-- Modgens can be compared for integrity checking --
-- lextype(ENTITIES) --
NAMES #IMPLIED -- Default: none --
superdcn -- Notation from which this one is derived --
-- lextype(NOTATION) --
NAME #IMPLIED -- Default: not a derivation --
template -- Parsing and processing context for the entity --
-- E.g.: macro definitions, profile, model, header,
that are shared by several data entities --
-- lextype(ENTITY) --
NAME #IMPLIED -- Default: none --
methods -- Handlers for encapsulated data --
-- Constraint: notation-specific format --
CDATA #IMPLIED -- Default: none --
degrade -- Degradation strategy if can't render perfectly --
-- Constraint: notation-specific format --
CDATA #IMPLIED -- Default: none --
encoding -- Platform-dependent encoding information --
-- Constraint: bit-combination size and "word"
size, expressed as permutation of normalized
word of 2, 4, or 8 bit combinations.
MSB is leftmost and numbered "1" --
-- Normalized="8 12", "8 1234", "8 12345678"
Example: Intel="8 21", "8 2143", "8 21436587" --
NUMBERS "8 12"
HyNames -- User names for HyTime attributes --
-- lextype(ATTNAME, s+, NAME,
(s+, ATTNAME, s+, NAME)*) --
CDATA #FIXED "" -- Default: none --
>
<!-- Property Definition --> <!--06.7.1 35-->
<!element propdef -- Property definition --
- O (%HyBrid;)* >
<!attlist propdef HyTime NAME propdef
pn -- Property name --
-- Constraint: must be unique in property set --
NAME #REQUIRED
psn -- Property set name --
-- lextype(NOTATION) --
NAME #REQUIRED
lex -- Lexical type of property if not inherent --
-- reftype(qpn|qltn) --
-- lextype(QPN|QLTN|("Oo",GRPO,IDREF,GRPC)) --
CDATA #IMPLIED
inherent -- Source of inherent property --
-- lextype(NOTATION) --
NAME #IMPLIED
dspec -- Definition of specifier for property --
-- reftype(qpn|qltn) --
-- lextype(QPN|QLTN|("Oo",GRPO,IDREF,GRPC)) --
CDATA #IMPLIED
deforsyn -- Definition or synonym? --
(def|syn) def
>
<!-- Qualified Property Name --> <!--06.7.2 36-->
<!element qpn -- Qualified property name --
- O (pn, spec?)+ >
<!attlist qpn HyTime NAME qpn
id ID #REQUIRED
>
<!-- Property Name --> <!--06.7.2 36-->
<!element pn -- Property name --
-- Constraint: must be a valid property name in psn --
- O RCDATA -- lextype(PN) -- >
<!attlist pn HyTime NAME pn
psn -- Property set name --
-- lextype(NOTATION) --
NAME #IMPLIED -- Default: from qpnpsn --
>
<!-- Specifier for Property --> <!--06.7.2 36-->
<!element spec -- Specifier for property --
- O ((qpn|qltn)+|pval) >
<!attlist spec HyTime NAME spec
>
<!-- Qualified Lexical Type Name --> <!--06.7.2 36-->
<!element qltn -- Qualified lexical type name --
-- Constraint: must be a valid ltn of lmgi element type --
- O RCDATA -- lextype(LTN) -- >
<!attlist qltn HyTime NAME qltn
lmgi -- Lexical model GI --
-- lextype(GI) --
NAME #IMPLIED -- Default: from qltnlmgi --
>
<!-- Property Value --> <!--06.7.2 36-->
<!element pval -- Property value --
-- Constraint: must satisfy property --
- O RCDATA >
<!attlist pval HyTime NAME pval >
<!-- Qualifying Name Attributes --> <!--06.7.3 37-->
<!attlist all-qual
qpnpsn -- QPN property set names --
-- Constraint: searched in order listed --
-- lextype(NOTATION, (s+, NOTATION)*) --
NAMES #IMPLIED -- Default: standard sets --
qltnlmgi -- QLTN lexical model GIs --
-- Constraint: searched in order listed --
-- lextype(GIL) --
NAMES #IMPLIED -- Default: none used --
>
<!-- MEASUREMENT --> <!--07 38-->
<!-- Dimension Specification --> <!--07.1.2 39-->
<!element dimspec -- Dimension specification --
-- Constraint: Content must resolve to a pair of markers
(unless marker1 omitted for implied dimref) --
O O (marklist, marklist?) >
<!attlist dimspec HyTime NAME dimspec
id ID #IMPLIED -- Default: none --
>
<!-- Overrun Handling --> <!--07.1.2.1 40-->
<!attlist overrun -- use: evsched baton wand relloc
dataloc treeloc pathloc listloc fcsloc --
overrun -- Handling of dimension that overruns range --
(error|wrap|trunc|ignore) error
>
<!-- Axis Marker List --> <!--07.1.2.2 40-->
<!ENTITY % marker -- Element type forms allowed in axis marker lists --
"marklist|dimref|markfun|mrkquery|calspec">
<!element marklist -- List of axis markers or their equivalents --
-- Constraint: nested marklists merge into single list --
-- Constraint: calspec permitted only in calendars --
O O (%marker;|#PCDATA)* -- lextype(snzi*) -->
<!attlist marklist HyTime NAME marklist
>
<!-- Dimension Specification List --> <!--07.1.2.3 41-->
<!element dimlist -- Constraint: derives dimspecs from marker pairs.
Nested marklist/dimlist merge into single list with
effect of "((marker1,marker2)|dimspec)*" --
-- Constraint: calspec permitted only in calendars --
O O (dimlist|dimspec
|%marker;|#PCDATA)* -- lextype(snzi*) -->
<!attlist dimlist HyTime NAME dimlist
>
<!-- Extent Specification --> <!--07.2.2 41-->
<!attlist exspec -- use: event proscope modscope --
exspec -- Extent specification --
-- Constraint: multiple references concatenated --
-- reftype(extlist) --
IDREFS #REQUIRED
>
<!-- Scheduled Extent --> <!--07.2.3 42-->
<!element extent -- Scheduled extent --
-- Constraint: multiple dimlists concatenated into one list,
which must contain one dimspec per axis --
O O (dimlist+) >
<!attlist extent HyTime NAME extent
id ID #IMPLIED -- Default: none --
>
<!-- Scheduled Extent List --> <!--07.2.4 42-->
<!element extlist -- Scheduled extent list --
-- Constraint: derives dimspecs from marker pairs and
extents from dimspec sequences (one per axis) and
interspersed syntactic extents --
-- Constraint: nested marklist/dimlist/extlist merge into
single list with effect of
"(((marker1,marker2)|dimspec)+|extent)+" --
-- Constraint: calspec permitted only in calendars --
O O (extlist|extent|dimlist|dimspec
|%marker;|#PCDATA)* -- lextype(snzi*) -->
<!attlist extlist HyTime NAME extlist
id ID #IMPLIED -- Default: none --
>
<!-- Measurement Domain Definition --> <!--07.3.1 43-->
<!element measure -- Measurement domain: convertible granules --
-- Defines granules in terms of a reference granule
and ultimately a standard measurement unit (SMU) --
-- Multiple definitions with same SMU comprise one domain --
- O (granule+) >
<!attlist measure HyTime NAME measure
id ID #IMPLIED -- Default: none --
smu -- Standard measurement unit for domain --
-- Constraint: notation name of an SMU.
If virtual, it must have a formal public ID
of "Virtual Measurement Unit" --
NAME #REQUIRED
>
<!element granule -- Granule definition --
- O (%HyBrid;)* >
<!attlist granule HyTime NAME granule
gn -- Granule name (case-sensitive) --
-- Constraint: cannot be same as SMU name
(with case ignored) --
-- lextype(word) --
CDATA #REQUIRED
gd -- Granule definition expression --
-- Constraint: ratio, and reference granule that
ratio is multiplied by (or the SMU, for which
case is ignored) --
-- lextype(frac, s+, word) --
CDATA #REQUIRED
>
<!-- Schedule Measurement --> <!--07.3.3 44-->
<!attlist schdmeas -- use: evsched baton wand --
basegran -- Base granule for each axis --
-- lextype(words) --
CDATA #FIXED "" -- Default: SMU for each --
gran2hmu -- Granule to HMU ratio for each axis --
-- Constraint: 1 ratio per axis, or 1 for all --
-- lextype(fracs) --
NUMBERS #FIXED "1 1"
>
<!-- Dimension Reference --> <!--07.4.1.2 45-->
<!element dimref -- Dimension reference --
- O (%HyBrid;)* >
<!attlist dimref HyTime NAME dimref
id ID #IMPLIED -- Default: none --
elemref -- Element referenced --
-- Constraint: semantic constraints on references
across axes (for example, a calspec is only
permitted in a reference to a calendar event).
#SCOPE permitted only in a scheduled extent in a
projectr, meaning dimension of projectr scope,
or a grpdex, meaning dimension of grpscope. --
-- reftype(dimspec|axis|extent|evsched|wand|baton
|evgrp|event|modscope|proscope|calspec) --
-- lextype(IDREF|(RNI,"SCOPE")) --
CDATA #REQUIRED
extref -- Extent referenced --
-- 1=first or only extent --
NUMBER 1
axisref -- Axis referenced --
-- Constraint: must be axis of referenced event --
-- lextype(GI) --
NAME #IMPLIED -- Default: dimspec or 1 axis --
projectr -- Event projector --
-- For reference to projected dimension of an event
or an evgrp, the projector that will create it --
-- Constraint: in same pevsched as reference --
-- reftype(projectr) --
IDREF #IMPLIED -- Default: not projected --
selcomp -- Selected component of dimension --
(first|last|qcnt) qcnt
flip -- Last is normally counted from end of range
(negative sign), and first from start of range
(positive). Qcnt is also normally positive.
Flip counts last from start of range (making it
positive), and first from end of range (making
it negative). Flip also makes qcnt negative. --
(flip|noflip) noflip
calevref -- Calendar event reference --
-- For reference to calendar event from within a
calendar event, returns dimension component in
this schedule with same calspec as referenced
element has in its schedule. --
(calevref|normal) normal
>
<!element markfun -- Marker function --
-- Represents (i.e., function returns) an axis marker --
- O (%HyBrid;)* >
<!attlist markfun HyTime NAME markfun
id ID #IMPLIED -- Default: none --
-- function attributes --
>
<!attlist function -- use: markfun nmquery mrkquery notloc bibloc --
fn -- Function name --
-- Constraint: unique in element type --
NAME #IMPLIED -- Default: none --
usefn -- Fn of another function to which to pass
the args of this one --
NAME #CONREF -- Default: none --
args -- Argument string passed to the function
(if supported by function language) --
CDATA #IMPLIED -- Default: none --
>
<!-- Document MDU Attributes --> <!--07.4.2.3 49-->
<!attlist docmdu -- use: HyDoc --
docmdu -- SMU to MDU ratio that makes the MDU a
common denominator of HMUs for all schedules in
all FCS that are in a given measurement domain.--
-- Constraint: SMU name and ratio for all of the
measurement domains used in the document. --
-- lextype((NAME,s+,frac),(s+,NAME,s+,frac)*) --
CDATA #FIXED "" -- Default: "1 1 for each SMU" --
>
<!-- LOCATION ADDRESS --> <!--08 50-->
<!-- Location Source --> <!--08.2.1 52-->
<!attlist locsrc -- use: dataloc treeloc pathloc relloc
listloc proploc fcsloc --
locsrc -- location source --
-- Constraint: No HyTime reftype constraints --
IDREFS #CURRENT -- Default: previous specified --
>
<!-- Multiple Location --> <!--08.2.2 52-->
<!attlist multloc -- use: nameloc dataloc treeloc pathloc
listloc relloc proploc notloc fcsloc --
ordering -- Is ordering of locations significant? --
(ordered|noorder) noorder
set -- Make multiple a set by ignoring duplicates --
(set|notset) notset
aggloc -- Are multiple locations an aggregate? --
(aggloc|agglink|nagg) nagg
>
<!-- Span Location --> <!--08.2.3 53-->
<!attlist spanloc -- use: nameloc dataloc treeloc pathloc
listloc relloc --
spanloc -- Do multiple locations comprise a span? --
-- Constraint: spanlink requires hyperlinks module--
(spanloc|spanlink|nspan) nspan
limsort -- Are limits sorted with span start first? --
(limsort|nlimsort) nlimsort
>
<!-- Name Space Locations --> <!--08.3 54-->
<!-- Named Location Address --> <!--08.3.2.1 55-->
<!element nameloc -- Assigns a local ID to one or more named objects --
-- Constraint: name list derived from content elements. --
- O (nmlist|nmquery)* >
<!attlist nameloc HyTime NAME nameloc
id ID #REQUIRED
-- multloc attributes --
-- spanloc attributes --
>
<!-- Name List Specification --> <!--08.3.2.2 55-->
<!element nmlist -- List of local or external ID or entity names --
- O (#PCDATA) -- lextype(NAMES) -->
<!attlist nmlist HyTime NAME nmlist
nametype -- Entity names or IDs of elements --
(entity|element|unified) entity
obnames -- Objects treated as names? --
(obnames|nobnames) nobnames
docorsub -- SGML document or subdoc whose prolog declares
entities or elements named in name list;
initially the document in which this occurs. --
ENTITY #IMPLIED -- Default: no change --
dtdorlpd -- Active DTD or LPDs for SGML document entity.
Base DTD if unspecified and docorsub changed; no
change if unspecified and docorsub unchanged. --
-- lextype(DTD|LPD+) --
NAMES #IMPLIED -- Default: unchanged or base --
>
<!-- Coordinate Locations --> <!--08.4 56-->
<!-- Data Location Address --> <!--08.4.1 57-->
<!element dataloc -- Locates string and token data objects in data --
-- Constraint: dimlists are concatenated into one list --
- O (dimlist*) >
<!attlist dataloc HyTime NAME dataloc
id ID #REQUIRED
quantum -- Data quantum: bit combination or token --
(str|norm|word|name|sint|date|time|utc) str
catsrc -- Concatenate multiple source objects into a
single object before applying dimlist to it --
(catsrc|catsrcsp|nocatsrc) nocatsrc
catres -- Concatenate results of applying dimlist, in
the order of the dimlist --
(catres|catressp|nocatres) nocatres
-- overrun attributes --
-- locsrc attributes --
-- multloc attributes --
-- spanloc attributes -->
<!-- Node Locations --> <!--08.4.2 58-->
<!-- Tree Combination Attributes --> <!--08.4.2.3 60-->
<!attlist treecom -- use: treeloc pathloc --
treecom -- Combine multiple source trees --
(treecom|ntreecom) ntreecom
>
<!-- Tree Location Address --> <!--08.4.2.4 60-->
<!element treeloc -- Locates nodes in a tree by classical method --
-- Constraint: marklists are merged into a single list that
contains 1st markers only; implied marker2 is 1 --
- O (marklist*) >
<!attlist treeloc HyTime NAME treeloc
id ID #REQUIRED
-- overrun attributes --
-- treecom attributes --
-- locsrc attributes --
-- multloc attributes --
-- spanloc attributes -->
<!-- Path Location Address --> <!--08.4.2.5 61-->
<!element pathloc -- Locates nodes in a tree viewed as a path list --
-- Constraint: dimlists are merged into a single list that
resolves to pairs of dimspecs --
- O (dimlist*) >
<!attlist pathloc HyTime NAME pathloc
id ID #REQUIRED
-- overrun attributes --
-- treecom attributes --
-- locsrc attributes --
-- multloc attributes --
-- spanloc attributes -->
<!-- List Location Address --> <!--08.4.2.6 62-->
<!element listloc -- Locates nodes in a node list viewed as a list --
- O (dimlist*) >
<!attlist listloc HyTime NAME listloc
id ID #REQUIRED
-- overrun attributes --
-- locsrc attributes --
-- multloc attributes --
-- spanloc attributes -->
<!-- Relative Location Address --> <!--08.4.2.7 63-->
<!element relloc -- Locates nodes in a tree relative to a starting node --
-- Constraint: dimlists are merged into a single list that
resolves to pairs of dimspecs --
- O (dimlist*) >
<!attlist relloc HyTime NAME relloc
id ID #REQUIRED
root -- Root of tree --
-- Constraint: 1 per starting node or 1 for all --
IDREFS #IMPLIED -- Default: document root of
each starting node --
relation -- Relationship to starting node --
-- Constraint: des requires "pathloc" option --
(anc|esib|ysib|des|parent|children) parent
-- overrun attributes --
-- locsrc attributes --
-- multloc attributes --
-- spanloc attributes -->
<!-- Semantic Locations --> <!--08.5 64-->
<!-- Property Location Address --> <!--08.5.1 64-->
<!element proploc -- Locates attribute or other property --
- O (QPN|#PCDATA) -- lextype(QPN) -->
<!attlist proploc HyTime NAME proploc
id ID #REQUIRED
joint -- Joint property of relationship of
members of multiple locsrc? --
(joint|several) several
apropsrc -- Use additional property source? --
(apropsrc|solesrc) solesrc
notprop -- If not a property of locsrc or apropsrc? --
(error|empty|ignore) ignore
-- locsrc attributes --
-- multloc attributes --
>
<!-- Notation-specific Location Address -->
<!--08.5.2 64-->
<!element notloc -- Locates an arbitrary portion of data in terms of its
data content notation (e.g., internal label,
3rd polygon in graphics notation).
Query that returns object, rather than HyTime address --
- O (%HyBrid;)* >
<!attlist notloc HyTime NAME notloc
id ID #REQUIRED
-- query attributes --
-- function attributes --
-- multloc attributes --
>
<!-- Bibliographic Location Address --> <!--08.5.3 65-->
<!element bibloc -- Textual bibliographic reference to real object --
-- Represents an address that is processable only as data --
- O (%HyBrid;)* >
<!attlist bibloc HyTime NAME bibloc
id ID #REQUIRED
-- query attributes --
-- function attributes --
>
<!-- Querying --> <!--08.7 66-->
<!-- Query Attributes --> <!--08.7.1 67-->
<!attlist query -- use: nmquery mrkquery notloc bibloc --
qdomain -- Domain of the query --
-- For some query notations, domain is inherent
and this attribute will be ignored. --
-- Constraint: No HyTime reftype constraints --
IDREFS #IMPLIED -- Default: inherent in query --
qcontext -- Semantic and parsing context for domain --
-- reftype(HyBrid) --
IDREF #IMPLIED -- Default: inherent in query --
>
<!-- Name List Query --> <!--08.7.2 68-->
<!element nmquery -- Query that returns a name list --
-- Selects elements or data by semantic properties --
-- Examples: DSSSL query; HyQ --
O O (%HyBrid;)* >
<!attlist nmquery HyTime NAME nmquery
id ID #IMPLIED -- Default: none --
-- query attributes --
-- function attributes --
>
<!-- Axis Marker Query --> <!--08.7.3 68-->
<!element mrkquery -- Axis marker query --
-- Queries an ordered domain and returns axis markers
of objects that satisfy query --
-- Constraint: represents axis markers in form required
by context: single marker, marker pair, etc. --
O O (%HyBrid;)* >
<!attlist mrkquery HyTime NAME mrkquery
id ID #IMPLIED -- Default: none --
-- query attributes --
-- function attributes --
>
<!-- HYPERLINKS --> <!--09 69-->
<!-- Independent Link --> <!--09.2.1 72-->
<!element ilink -- Independent link --
- O (%HyBrid;)* >
<!attlist ilink HyTime NAME ilink
id ID #IMPLIED -- Default: none --
anchrole -- Anchor roles --
-- Constraint: one per anchor --
-- lextype((NAME, s+, (RNI, "AGG")?),
(s+, NAME, s+, (RNI, "AGG")?)+) --
CDATA #FIXED in-DTD
linkends -- Link ends --
-- Constraint: one anchor per anchor role. If one
is omitted, ilink element is first anchor. --
-- Constraint: No HyTime reftype constraints,
but application designers can constrain
element types with reftype attribute --
IDREF #REQUIRED
extra -- External access traversal rule --
-- Constraint: one per anchor or one for all --
-- lextype(("E"|"I"|"A"|"N"|"P"),
(s+, ("E"|"I"|"A"|"N"|"P"))*) --
NAMES #IMPLIED -- Default: no HyTime traversal --
intra -- Internal access traversal rule --
-- Constraint: one per anchor or one for all --
-- lextype(("E"|"I"|"A"|"N"|"P"),
(s+, ("E"|"I"|"A"|"N"|"P"))*) --
NAMES #IMPLIED -- Default: no HyTime traversal --
endterms -- Link end term information --
-- Constraint: one per anchor or one for all --
-- reftype(HyBrid) --
IDREFS #IMPLIED -- Default: none --
aggtrav -- Traversal of agglink anchors: agg or members --
-- Constraint: one per anchor or one for all --
-- lextype(("AGG"|"MEM"|"COR"),
(s+, ("AGG"|"MEM"|"COR"))*) --
NAMES agg
>
<!-- Contextual Link --> <!--09.2.2 74-->
<!element clink -- Contextual link --
- O (%HyBrid;)* >
<!attlist clink HyTime NAME clink
id ID #IMPLIED -- Default: none --
linkend -- Link end --
-- Constraint: No HyTime reftype constraints,
but application designers can constrain
element types with reftype attribute --
IDREF #REQUIRED
>
<!-- SCHEDULING --> <!--10 75-->
<!-- Finite Coordinate Space --> <!--10.2 76-->
<!element fcs -- Finite coordinate space --
- O (evsched|wand|baton)+ >
<!attlist fcs HyTime NAME fcs
id ID #IMPLIED -- Default: none --
fcsname -- Name of semantic FCS described by the element --
NAME #IMPLIED -- Default: FCS is unnamed --
fcsmdu -- SMU to MDU ratio that makes the MDU a
common denominator of HMUs for all schedules on
all axes of FCS in a given measurement domain.--
-- Constraint: SMU name and ratio for one or
more of the domains used in the FCS. An SMU
name can occur only once. --
-- lextype((NAME,s+,frac),(s+,NAME,s+,frac)*) --
CDATA #FIXED "" -- Default: equal to docmdu --
axisdefs -- Definitions of FCS axes --
-- Constraint: GIs of axis element types --
-- lextype(GIL) --
NAMES #FIXED in-DTD
>
<!-- Axis Definition --> <!--10.2 76-->
<!element axis -- Axis definition for a finite coordinate space --
- O (%HyBrid;)* >
<!attlist axis HyTime NAME axis
id ID #IMPLIED -- Default: none --
axismeas -- Measurement domain (SMU) of this axis --
-- lextype(NOTATION) --
CDATA #FIXED in-DTD
axismdu -- SMU to MDU ratio that makes the MDU a
common denominator of HMUs for all schedules on
this axis in all FCS elements that use it.--
-- lextype(frac) --
CDATA #FIXED "" -- Default: equal to fcsmdu --
axisdim -- Dimension of this axis in MDUs --
-- lextype(number) --
CDATA #FIXED in-DTD
-- calendar attributes --
>
<!-- Schedule --> <!--10.3 77-->
<!attlist sched -- use: evsched baton wand --
axisord -- Order of axes in schedule --
-- Constraint: GIs of axis element types. Omitted
GI means all events in schedule fully occupy
the omitted axis --
-- lextype(GIL) --
CDATA #FIXED "" -- Default: axisdefs in FCS --
apporder -- Order of schedule elements is significant to
the application and must be preserved --
(order|disorder) order
sorted -- Representation of schedule elements is sorted
by order of position on axes of schedule --
(sorted|unsorted) unsorted
>
<!-- Event Schedule --> <!--10.4 77-->
<!element evsched -- Event schedule --
- O (evgrp|event)* >
<!attlist evsched HyTime NAME evsched
id ID #IMPLIED -- Default: none --
-- sched attributes --
-- schdmeas attributes --
-- overrun attributes --
-- pls2gran attributes --
>
<!-- Event Group --> <!--10.4.1 78-->
<!element evgrp -- Event group --
- O (evgrp|event)+ >
<!attlist evgrp HyTime NAME evgrp
id ID #IMPLIED -- Default: none --
grpscope -- Group scope (nominal extent of group) --
-- For each axis, the dimension is the lowest first
quantum of any group member through the highest
last quantum of any group member on that axis.
All of a member's extents are included. --
-- reftype(extent) --
IDREF #IMPLIED -- Default: to be calculated --
grpdex -- Group derived extent specification --
-- Use for resizing, rearrangement, repetition.
Group members are given the derived extents.
If nominal extent is also wanted, it must be
specified as one of the derived extents. --
-- Constraint: multiple references concatenated --
-- reftype(extlist) --
IDREFS #IMPLIED -- Default: no derivation --
-- pls2gran attributes --
>
<!-- Event --> <!--10.4.2 79-->
<!element event -- Event --
-- Object could include loc addresses to identify portions --
- O (accanch|%HyBrid;)* >
<!attlist event HyTime NAME event
id ID #IMPLIED -- Default: none --
exrecon -- Extent reconciliation rule if object won't fit --
-- reftype(exrecon) --
IDREF #IMPLIED -- Default: none --
-- exspec attributes --
-- pls2gran attributes --
>
<!-- Pulses --> <!--10.4.3 80-->
<!attlist pls2gran -- use: evsched evgrp event --
pls2gran -- Pulse to granule ratio for each axis --
-- Constraint: 1 ratio per axis, or 1 for all --
-- lextype(fracs) --
NUMBERS "1 1"
>
<!-- Malleable Object --> <!--10.5.2 81-->
<!element mallobj -- Malleable object --
- O (%HyBrid;)* >
<!attlist mallobj HyTime NAME mallobj
id ID #IMPLIED -- Default: none --
effect -- Effect created by object --
(pause|hold|wallpapr) pause
>
<!-- Accessed Anchor List --> <!--10.5.3 82-->
<!element accanch -- Accessed anchor list --
-- Constraint: if empty, all anchors and link end terms of
all links, when accessed, are the object of this event if
they are not included in another accessed anchor list. --
- O (acctype|acclink)* >
<!attlist accanch HyTime NAME accanch
>
<!attlist accend -- use: acctype acclink --
accrole -- Anchor roles corresponding to link ends --
-- Constraint: names of anchor roles --
NAMES #IMPLIED -- Default: all link ends --
accend -- For accessed link end, show ENDTERM or ANCHOR? --
(endterm|anchor) anchor
>
<!element acctype -- Accessed link element types --
- O (%HyBrid;)* >
<!attlist acctype HyTime NAME acctype
linktype -- Element types of link elements --
-- Constraint: GIs of link element types --
-- lextype(GI) --
NAMES #REQUIRED
-- accend attributes --
>
<!element acclink -- Accessed link element --
- O (%HyBrid;)* >
<!attlist acclink HyTime NAME acclink
linkid -- Link element --
-- Constraint: "locs" must be agglink or spanlink --
-- reftype(ilink|clink|nameloc|dataloc|treeloc
|pathloc|listloc|relloc|proploc|notloc|fcsloc) --
IDREF #REQUIRED
-- accend attributes --
>
<!-- Extent Reconciliation Strategy --> <!--10.6 83-->
<!element exrecon -- Reconciliation strategy if object won't fit extent --
- O (%HyBrid;)* >
<!attlist exrecon HyTime NAME exrecon
id ID #REQUIRED
altrecon -- Alternative reconciliation strategy to try
for least objectionable fit --
-- reftype(exrecon) --
IDREF #IMPLIED -- Default: no more to try --
altcrit -- Criteria for deciding whether to use altrecon --
-- reftype(HyBrid) --
IDREF #IMPLIED -- Default: none --
replace -- Replacement object (e.g., malleable or error) --
-- Normally omitted for 1st exrecon in chain --
-- reftype(event) --
IDREF #IMPLIED -- Default: don't replace --
align -- Align object (before vamping) with event --
-- Constraint: one F|C|L or snum pair per axis,
or one for all --
-- lextype(("F"|"C"|"L"|(snum, s+, snum))+) --
CDATA C
vamp -- Repeat undersize object in specified axis
and optionally crop the excess. --
-- VAMPCROP repeats 0 or more times until it
overshoots, then crops the excess. --
-- VAMPFILL repeats 0 or more times until it
can go no further without overshooting, then
fills the excess with filler. --
-- NOVAMP doesn't repeat object but fills on
undershot axes and crops on overshot axes. --
-- Constraint: one keyword per axis or one for all--
-- lextype(("VAMPCROP"|"VAMPFILL"|"NOVAMP"),
(s+, ("VAMPCROP"|"VAMPFILL"|"NOVAMP"))*) --
NAMES novamp
filler -- Malleable object to fill excess extent --
-- reftype(mallobj) --
IDREF #IMPLIED -- Default: pause --
>
<!-- Finite Coordinate Space Location --> <!--10.7 85-->
<!element fcsloc -- Imposes a HyTime FCS onto data so that a location
within it can be defined by HyTime extents --
-- Constraint: extlists are concatenated into one list
of extents, each in impfcs order in MDUs --
- O (extlist*) >
<!attlist fcsloc HyTime NAME fcsloc
id ID #REQUIRED
impfcs -- Type of FCS imposed on this data --
-- lextype(GI) --
NAME #REQUIRED
-- overrun attributes --
-- locsrc attributes --
-- multloc attributes --
-- spanloc attributes -->
<!-- Calendar --> <!--10.8 86-->
<!attlist calendar -- use: axis --
calendar -- Synchronizes axis to absolute date and time by
specifying date/time of first quantum --
-- Constraint: only if axismeas is SIsecond --
-- reftype(calspec) --
-- lextype(IDREF, s+, ("GMT"|"UTC")) --
CDATA #FIXED "" -- Default: not a calendar --
>
<!-- Calendar Specification --> <!--10.8.1 86-->
<!element calspec -- Calendar specification --
-- Constraint: omitted content elements are those of
previous specified event in this schedule. --
- O (abstime | ((date | juldate), abstime?) ) >
<!attlist calspec HyTime NAME calspec
id ID #IMPLIED -- Default: none --
>
<!-- Date and Julian Date --> <!--10.8.1.1 87-->
<!element date -- Date --
-- Constraint: date is valid date in UTC year-month-day
format, except that "day" and "month-day" are also
accepted. Year has 4 digits, month and day have two,
with high-order zeros used to maintain digit count. --
-- Omitted components are those of previous specified
event in this schedule. --
- O (#PCDATA) -- lextype(char+) -->
<!attlist date HyTime NAME date
era -- Era: previous (BC/BCE/BP) or current (AD/CE) --
(bc|bce|bp|ad|ce) #CURRENT
>
<!element juldate -- Julian date --
- O (#PCDATA) -- lextype(snum) -->
<!attlist juldate HyTime NAME juldate >
<!-- Absolute Time --> <!--10.8.1.2 87-->
<!element abstime -- Absolute time --
-- Constraint: time is valid 24-hr time in UTC
"hour:minute:second.decimal" format, except that
"minute", "hour:minute", and "hour:minute:second"
are also accepted. Component values are: hour=00-23,
minute and second=00-59, and decimal=any number. --
-- Omitted components are those of previous specified
event in this schedule. --
- O (#PCDATA) -- lextype(char+) -->
<!attlist abstime HyTime NAME abstime
timeoff -- Time offset for summertime or time zone --
-- List of applicable offsets --
-- reftype(timeoff) --
IDREFS #IMPLIED -- Default: local time --
>
<!element timeoff -- Time offset for summertime or time zone --
-- Constraint: valid time zone offset in UTC "hour:minute"
format, preceded by hyphen for negative offset --
- O (#PCDATA) -- lextype(char+) -->
<!attlist timeoff HyTime NAME timeoff
id ID #REQUIRED
effdate -- Date on which offset takes effect --
-- Constraint: UTC date format --
CDATA #IMPLIED -- Default: always in effect --
>
<!-- RENDITION --> <!--11 89-->
<!-- Object Modification --> <!--11.1 89-->
<!-- Wand and Modifier Rules --> <!--11.1.1 90-->
<!element wandrule -- Wand rule --
- O (%HyBrid;)* >
<!attlist wandrule HyTime NAME wandrule
evscheds -- Event schedules --
-- reftype(evsched) --
IDREFS #REQUIRED
wand -- Wand or wand patch --
-- Constraint: must be aligned with evscheds --
-- reftype(wand|wndpatch) --
IDREF #REQUIRED
>
<!element modrule -- Modifier rule --
- O (%HyBrid;)* >
<!attlist modrule HyTime NAME modrule
events -- Events and event groups --
-- reftype(event|evgrp) --
IDREFS #REQUIRED
modpatch -- Modifier or modifier patch --
-- reftype(HyBrid|modpatch) --
IDREF #REQUIRED
>
<!-- Wand --> <!--11.1.2 90-->
<!element wand -- Wand --
- O (modscope+) >
<!attlist wand HyTime NAME wand
id ID #REQUIRED
-- sched attributes --
-- schdmeas attributes --
-- overrun attributes --
>
<!-- Modifier Scope --> <!--11.1.3 91-->
<!element modscope -- Modifier scope --
- O (%HyBrid;)* >
<!attlist modscope HyTime NAME modscope
id ID #IMPLIED -- Default: none --
-- exspec attributes --
>
<!-- Patches --> <!--11.1.4 91-->
<!element wndpatch -- Wand patch --
-- Constraint: subset of SGML model group with IDREFs as
names and no occurrence indicators or OR connectors. --
-- reftype(wndpatch|wand) --
- O (#PCDATA) -- ulextype(char*) -->
<!attlist wndpatch HyTime NAME wndpatch
id ID #REQUIRED >
<!element modpatch -- Modifier patch --
-- Constraint: subset of SGML model group with IDREFs as
names and no occurrence indicators or OR connectors. --
-- reftype(modpatch|HyBrid) --
- O (#PCDATA) -- ulextype(char*) -->
<!attlist modpatch HyTime NAME modpatch
id ID #REQUIRED >
<!-- Event Projection --> <!--11.2 92-->
<!-- Baton Rule --> <!--11.2.2 93-->
<!element batrule -- Baton rule --
- O (%HyBrid;)* >
<!attlist batrule HyTime NAME batrule
evscheds -- Event schedules --
-- reftype(evsched) --
IDREFS #REQUIRED
baton -- Baton --
-- Constraint: must be aligned with evscheds --
-- reftype(baton) --
IDREF #REQUIRED
pevsched -- Projected event schedules --
-- Constraint: must be different FCS from baton --
-- reftype(evsched) --
IDREFS #REQUIRED
>
<!-- Baton --> <!--11.2.3 94-->
<!element baton -- Baton --
- O (proscope+) >
<!attlist baton HyTime NAME baton
id ID #REQUIRED
-- sched attributes --
-- schdmeas attributes --
-- overrun attributes --
>
<!-- Projector Scope --> <!--11.2.3.1 95-->
<!element proscope -- Projector scope --
-- Defines the scope of an event projector
as an extent of the unprojected schedule --
- O (projectr) >
<!attlist proscope HyTime NAME proscope
id ID #IMPLIED -- Default: none --
-- exspec attributes --
>
<!-- Event Projector --> <!--11.2.3.2 95-->
<!element projectr -- Event projector --
-- Defines extents in the projected schedule into which
events within the projector scope will be projected --
-- Constraint: extlists are concatenated into one list --
- O (extlist+|profun|scaleref) >
<!attlist projectr HyTime NAME projectr
id ID #IMPLIED -- Default: none --
strict -- Strictness of interpretation: e.g., rubato --
-- lextype(words) --
CDATA #IMPLIED -- Default: strict projection --
>
<!-- Projection Function --> <!--11.2.3.3 95-->
<!element profun -- Projection function --
- O (%HyBrid;)* >
<!attlist profun HyTime NAME profun >
<!-- Scaling Reference --> <!--11.2.3.4 96-->
<!element scaleref -- Scaling reference --
-- Instantaneous projection scaling at specified quantum
in each axis of aligned original or projected schedule --
-- Constraint: one dimref per axis of baton --
- O (dimref+) >
<!attlist scaleref HyTime NAME scaleref >
<!-- Rendition Rule --> <!--11.3 96-->
<!element rendrule -- Rendition rule --
- O (rendrule|batrule|wandrule|modrule)+ >
<!attlist rendrule HyTime NAME rendrule
id ID #REQUIRED
apporder -- Order of rules in content is significant to
the application and must be preserved --
(order|disorder) order
>
5. USEFUL ELEMENT TYPES, NOTATIONS, AND INSTANCES
<!-- HyLex: HYTIME LEXICAL MODEL NOTATION --> <!--A.1 102-->
<!-- Delimiters --> <!--A.1.1.2 103-->
Role String Description
==== ====== ===========
XESC \ Escape
XGRPO ( Group open
XGRPC ) Group close
XLIT " Literal start or end
XLITA ' Literal start or end (alternative)
XSEQ , Sequence connector
XOR | Or connector
XDTGO [ Alternative single-character pattern open
XDTGC ] Alternative single-character pattern close
XOPT ? Optional occurrence indicator
XREP + Required and repeatable
XOREP * Optional and repeatable
XMINUS - Negation and range
XRNI # Reserved name indicator
<!-- HyLex Element Type --> <!--A.1.2 104-->
<!-- HyTime Lexical Model -->
<!NOTATION HyLex PUBLIC
"+//ISO/IEC 10744:1992//NOTATION HyTime Lexical Model Notation//EN" >
<!ELEMENT HyLex -- HyTime lexical model --
- - (#PCDATA) >
<!ATTLIST HyLex HyTime NAME #FIXED lexmodel
notation -- Data content notation --
NAME #FIXED HyLex
delims -- Data content notation delimiter changes --
-- Constraint: names are delimiter role names --
-- Constraint: a given NAME can occur only once --
-- lextype( (NAME, s+, char*),
(s+, NAME, s+, char*)* ) --
CDATA #IMPLIED -- Default: not changed --
ltn -- Lexical type name --
NAME #REQUIRED
lexord -- Lexicographic ordering for comparisons --
-- reftype(lexord) --
-- lextype(IDREF|(RNI,"SGMLCASE")) --
CDATA #IMPLIED -- Default: character set order--
boundary -- Hit boundary constraint --
(sodeod|sodiec|isceod|isciec|inmodel) sodeod
qpnpsn -- QPN property set names --
-- Constraint: searched in order listed --
-- lextype(NOTATION, (s+, NOTATION)*) --
NAMES #IMPLIED -- Default: standard sets --
qltnlmgi -- QLTN lexical model GIs --
-- Constraint: searched in order listed --
-- lextype(GIL) --
NAMES #FIXED HyLex
norm -- Normalization --
(norm|unorm) norm
wildmax -- Maximum bit combinations in wildcard match --
NUMBER 512
>
<!-- Useful HyLex Types --> <!--A.1.3 105-->
Public identifier:
"ISO/IEC 10744:1992//TEXT Useful HyLex Lexical Types//EN"
<!-- Useful Lexical Types -->
<hylex norm ltn=IDRN> (IDREF | "#NULL") </hylex>
<hylex norm ltn=NAMES> (NAME, (s+, NAME)*) </hylex>
<hylex norm ltn=GIL> (GI, (s+, GI)*) </hylex>
<hylex norm ltn=IDR2> (IDREF, s+, IDREF) </hylex>
<hylex norm ltn=IDR2l> (IDR2, (s+, IDR2)*) </hylex>
<hylex norm ltn=ATTORCON>(ATTNAME|"#CONTENT") </hylex>
<hylex norm ltn=numl> (number, (s+, number)*) </hylex>
<hylex norm ltn=frac> (number, s+, number) <!--fraction (numerator 1st)--></hylex>
<hylex norm ltn=fracs> (frac, (s+, frac)*) </hylex>
<hylex norm ltn=snum> ([+-]?,number) <!--signed number--> </hylex>
<hylex norm ltn=nzdigit> ([1-9]) <!--non-zero digit--> </hylex>
<hylex norm ltn=unzi> (nzdigit,digit*) <!--unsigned n-z integer--> </hylex>
<hylex norm ltn=snzi> ([+-]?,unzi) <!--signed n-z integer--> </hylex>
<hylex norm ltn=word> (nmchar+) </hylex>
<hylex norm ltn=words> (word, (s+, word)*) </hylex>
<hylex unorm ltn=literal> ((LIT,#*,LIT) | (LITA,#*,LITA)) <!--SGML literal--> </hylex>
<!-- String Forms of Architectural Forms -->
<hylex ltn=qltn> ((LMGI,PLUS)?,LTN) </hylex>
<hylex ltn=qpn> (((PSN,PLUS)?,(PN,(DSO,(QPN|QLTN|word|literal),DSC)?)),
(NET,((PSN,PLUS)?,(PN,(DSO,(QPN|QLTN|word|literal),DSC)?)))*) </hylex>
<hylex ltn=arg> (PERO,nzdigit,(digit, digit?)?) </hylex>
<!-- HyTime PROPERTY DEFINITION --> <!--A.2 106-->
<!ELEMENT HyPD -- HyTime Property Definition --
- O (#PCDATA) >
<!ATTLIST HyPD HyTime NAME #FIXED propdef
pn -- Property name --
-- Constraint: must be unique in property set --
NAME #REQUIRED
psn -- Property set name --
-- lextype(NOTATION) --
NAME #REQUIRED
lex -- Lexical type of property if not inherent --
-- lextype(qltn|qpn) --
CDATA #IMPLIED
inherent -- Source of inherent property --
-- lextype(NOTATION) --
(SGML|HyTime) #IMPLIED -- Default: not inherent --
dspec -- Definition of specifier for property --
-- lextype(qpn|qltn) --
CDATA #IMPLIED
deforsyn -- Definition or synonym? --
(def|syn) def
qpnpsn -- QPN property set names --
-- Constraint: searched in order listed --
-- lextype(NOTATION, (s+, NOTATION)*) --
NAMES #IMPLIED -- Default: standard sets --
qltnlmgi -- QLTN lexical model GIs --
-- Constraint: searched in order listed --
-- lextype(GIL) --
NAMES #IMPLIED -- Default: none used --
>
<!-- Useful property sets --> <!--A.2.1 107-->
<!NOTATION SGML PUBLIC "+//ISO 8879:1986//NOTATION
Standard Generalized Markup Language//EN">
<!NOTATION HyTime PUBLIC "+//ISO/IEC 10744:1992//NOTATION
Hypermedia/Time-based Structuring Language//EN">
<!-- SGML lexical properties --> <!--A.2.1.1 107-->
<!-- HTlex1: SGML character classes --> <!--A.2.1.1.1 107-->
<!NOTATION HTlex1 PUBLIC
"+//ISO/IEC 10744:1992//NOTATION HTlex1::SGML character classes//EN">
<!-- Abstract Syntax Character Classes -->
<HyPD psn=HTlex1 SGML pn=digit>
<HyPD psn=HTlex1 SGML pn=lcletter>
<HyPD psn=HTlex1 SGML pn=special>
<HyPD psn=HTlex1 SGML pn=ucletter>
<!-- Concrete Syntax Character Classes -->
<HyPD psn=HTlex1 SGML pn=datachar>
<HyPD psn=HTlex1 SGML pn=delmchar>
<HyPD psn=HTlex1 SGML pn=funchar>
<HyPD psn=HTlex1 SGML pn=lcnmchar>
<HyPD psn=HTlex1 SGML pn=lcnmstrt>
<HyPD psn=HTlex1 SGML pn=msichar>
<HyPD psn=HTlex1 SGML pn=msochar>
<HyPD psn=HTlex1 SGML pn=msschar>
<HyPD psn=HTlex1 SGML pn=re>
<HyPD psn=HTlex1 SGML pn=rs>
<HyPD psn=HTlex1 SGML pn=sepchar>
<HyPD psn=HTlex1 SGML pn=space>
<HyPD psn=HTlex1 SGML pn=ucnmchar>
<HyPD psn=HTlex1 SGML pn=ucnmstrt>
<!-- Syntactic Variables Derived From Character Classes -->
<HyPD psn=HTlex1 SGML pn=s> <!--s ("white space") separator-->
<HyPD psn=HTlex1 SGML pn=fnch> <!--function character-->
<HyPD psn=HTlex1 SGML pn=nmsch> <!--name start character-->
<HyPD psn=HTlex1 SGML pn=nmchar> <!--name character-->
<HyPD psn=HTlex1 SGML pn=muchar> <!--markup character-->
<HyPD psn=HTlex1 SGML pn=char> <!--SGML character-->
<!-- HTlex2: SGML delimiter role names --> <!--A.2.1.1.2 108-->
<!NOTATION HTlex2 PUBLIC
"+//ISO/IEC 10744:1992//NOTATION HTlex2::SGML delimiter roles//EN">
<HyPD psn=HTlex2 SGML pn=AND>
<HyPD psn=HTlex2 SGML pn=COM>
<HyPD psn=HTlex2 SGML pn=CRO>
<HyPD psn=HTlex2 SGML pn=DSC>
<HyPD psn=HTlex2 SGML pn=DSO>
<HyPD psn=HTlex2 SGML pn=DTGC>
<HyPD psn=HTlex2 SGML pn=DTGO>
<HyPD psn=HTlex2 SGML pn=ERO>
<HyPD psn=HTlex2 SGML pn=ETAGO>
<HyPD psn=HTlex2 SGML pn=GRPC>
<HyPD psn=HTlex2 SGML pn=GRPO>
<HyPD psn=HTlex2 SGML pn=LIT>
<HyPD psn=HTlex2 SGML pn=LITA>
<HyPD psn=HTlex2 SGML pn=MDC>
<HyPD psn=HTlex2 SGML pn=MDO>
<HyPD psn=HTlex2 SGML pn=MINUS>
<HyPD psn=HTlex2 SGML pn=MSC>
<HyPD psn=HTlex2 SGML pn=NET>
<HyPD psn=HTlex2 SGML pn=OPT>
<HyPD psn=HTlex2 SGML pn=OR>
<HyPD psn=HTlex2 SGML pn=PERO>
<HyPD psn=HTlex2 SGML pn=PIC>
<HyPD psn=HTlex2 SGML pn=PIO>
<HyPD psn=HTlex2 SGML pn=PLUS>
<HyPD psn=HTlex2 SGML pn=REFC>
<HyPD psn=HTlex2 SGML pn=REP>
<HyPD psn=HTlex2 SGML pn=RNI>
<HyPD psn=HTlex2 SGML pn=SEQ>
<HyPD psn=HTlex2 SGML pn=SHORTREF>
<HyPD psn=HTlex2 SGML pn=STAGO>
<HyPD psn=HTlex2 SGML pn=TAGC>
<HyPD psn=HTlex2 SGML pn=VI>
<!-- SGML and HyTime semantic properties --> <!--A.2.1.2 109-->
<!-- HTsem1: SGML basic constructs --> <!--A.2.1.2.1 109-->
<!NOTATION HTsem1 PUBLIC
"+//ISO/IEC 10744:1992//NOTATION HTsem1::SGML basic constructs//EN">
<!-- Declared Value Prescriptions of Attributes -->
<HyPD psn=HTsem1 SGML pn=cdata>character data</HyPD>
<HyPD psn=HTsem1 SGML pn=ENTITY>general entity name</HyPD>
<HyPD psn=HTsem1 SGML pn=ENTITIES>general entity name list</HyPD>
<HyPD psn=HTsem1 SGML pn=ID>id value</HyPD>
<HyPD psn=HTsem1 SGML pn=IDREF>id reference value</HyPD>
<HyPD psn=HTsem1 SGML pn=IDREFS>id reference list</HyPD>
<HyPD psn=HTsem1 SGML pn=NAME>
<HyPD psn=HTsem1 SGML pn=NAMES>name list</HyPD>
<HyPD psn=HTsem1 SGML pn=NMTOKEN>name token</HyPD>
<HyPD psn=HTsem1 SGML pn=NMTOKENS>name token list</HyPD>
<HyPD psn=HTsem1 SGML pn=NOTATION>notation name</HyPD>
<HyPD psn=HTsem1 SGML pn=NUMBER>
<HyPD psn=HTsem1 SGML pn=NUMBERS>number list</HyPD>
<HyPD psn=HTsem1 SGML pn=NUTOKEN>number token</HyPD>
<HyPD psn=HTsem1 SGML pn=NUTOKENS>number token list</HyPD>
<!-- Identifiers of Objects or Properties -->
<HyPD psn=HTsem1 SGML pn=ENAME>entity name</HyPD>
<HyPD psn=HTsem1 SGML pn=ATTNAME>attribute name</HyPD>
<HyPD psn=HTsem1 SGML pn=GI>generic identifier</HyPD>
<HyPD psn=HTsem1 SGML pn=CID>ID of current element</HyPD>
<!-- Properties of a Prolog -->
<HyPD psn=HTsem1 SGML pn=dtd>document type definition</HyPD>
<HyPD psn=HTsem1 SGML pn=lpd>link process definition</HyPD>
<HyPD psn=HTsem1 SGML pn=ASSGI>associated element type</HyPD>
<HyPD psn=HTsem1 SGML pn=ASSNOT>associated notation name</HyPD>
<HyPD psn=HTsem1 SGML pn=etype dspec=ENAME>entity type</HyPD>
<HyPD psn=HTsem1 SGML pn=attdefs dspec=ASSGI>attribute definition list</HyPD>
<HyPD psn=HTsem1 SGML pn=attdef dspec=ATTNAME>attribute definition</HyPD>
<HyPD psn=HTsem1 SGML pn=ATTDV dspec=ATTNAME>declared value</HyPD>
<HyPD psn=HTsem1 SGML pn=ATTDVNMT>name token in ATTDV name token group</HyPD>
<!-- Properties of a Parsed Document Instance -->
<HyPD psn=HTsem1 SGML pn=ent dspec=ENAME>entity</HyPD>
<HyPD psn=HTsem1 syn pn=enot>etype[ENAME]/notation</HyPD>
<HyPD psn=HTsem1 SGML pn=datatts dspec=ENAME>data attribute specification</HyPD>
<HyPD psn=HTsem1 SGML pn=elem dspec=ID>element</HyPD>
<HyPD psn=HTsem1 SGML pn=celem>current element</HyPD>
<HyPD psn=HTsem1 SGML pn=attspecs dspec=ID>attribute specification list</HyPD>
<HyPD psn=HTsem1 SGML pn=linkatts dspec=ID>link attribute specification</HyPD>
<HyPD psn=HTsem1 SGML pn=linkres dspec=ID>result element specification</HyPD>
<HyPD psn=HTsem1 SGML pn=attval dspec=ATTNAME>attribute value</HyPD>
<!-- HTsem2: HyTime constructs --> <!--A.2.1.2.2 110-->
<!NOTATION HTsem2 PUBLIC
"+//ISO/IEC 10744:1992//NOTATION HTsem2::HyTime basic constructs//EN">
<!-- Identifiers of Objects or Properties -->
<HyPD psn=HTsem2 HyTime pn=LTN>lexical type name</HyPD>
<HyPD psn=HTsem2 HyTime pn=LMGI lex=GI>lexmodel element type</HyPD>
<HyPD psn=HTsem2 HyTime pn=PN>property name</HyPD>
<HyPD psn=HTsem2 HyTime pn=PSN>property set name</HyPD>
<HyPD psn=HTsem2 HyTime pn=spec>specifier of property</HyPD>
<HyPD psn=HTsem2 HyTime pn=FN>function name</HyPD>
<HyPD psn=HTsem2 HyTime pn=OCI>object class identifier</HyPD>
<HyPD psn=HTsem2 HyTime pn=PCOBJ>PTR to current object</HyPD>
<HyPD psn=HTsem2 HyTime pn=NLNAME>HyQ node list name</HyPD>
<HyPD psn=HTsem2 HyTime pn=REFTYPE>reference type</HyPD>
<HyPD psn=HTsem2 HyTime pn=LEXTYPE>lexical type</HyPD>
<!-- Location Addressing Properties -->
<HyPD psn=HTsem2 HyTime pn=object dspec=PTR>object</HyPD>
<HyPD psn=HTsem2 HyTime pn=cobj>current object</HyPD>
<HyPD psn=HTsem2 HyTime pn=locsrc>location source of object</HyPD>
<HyPD psn=HTsem2 HyTime pn=cand>HyQ selector candidate</HyPD>
<HyPD psn=HTsem2 HyTime pn=DQ>dataloc data quantum</HyPD>
<HyPD psn=HTsem2 HyTime pn=pelement dspec=PTR>pseudo-element</HyPD>
<HyPD psn=HTsem2 HyTime pn=dataent>data entity</HyPD>
<HyPD psn=HTsem2 HyTime pn=dataobj dspec=PTR>data object</HyPD>
<HyPD psn=HTsem2 HyTime pn=elpelem dspec=PTR>element or pseudo-element</HyPD>
<HyPD psn=HTsem2 HyTime pn=NODETYPE>node type:
(element|pelement|dataent|dataobj)</HyPD>
<HyPD psn=HTsem2 HyTime pn=docroot>document root</HyPD>
<HyPD psn=HTsem2 HyTime pn=docpos>pathloc document position</HyPD>
<HyPD psn=HTsem2 HyTime pn=docpostl>treeloc document position</HyPD>
<HyPD psn=HTsem2 HyTime pn=datapos>data position</HyPD>
<HyPD psn=HTsem2 HyTime pn=apropsrc>additional property source</HyPD>
<!-- Hyperlinking Properties -->
<HyPD psn=HTsem2 HyTime pn=hylink dspec=PTR>ilink or clink element</HyPD>
<HyPD psn=HTsem2 HyTime pn=anchors>objects linked by a hylink</HyPD>
<HyPD psn=HTsem2 HyTime pn=ANCHROLE>anchor roles of anchors of hylink</HyPD>
<HyPD psn=HTsem2 HyTime pn=linkedby>hylinks that link an anchor</HyPD>
<HyPD psn=HTsem2 HyTime pn=linkedto>other anchors of linkedby</HyPD>
<HyPD psn=HTsem2 HyTime pn=LINKEDAS>role of anchor in hylink</HyPD>
<!-- HTsem3: Unparsed SGML text --> <!--A.2.1.2.3 111-->
<!NOTATION HTsem3 PUBLIC
"+//ISO/IEC 10744:1992//NOTATION HTsem3::Unparsed SGML text//EN">
<HyPD psn=HTsem3 SGML pn=unpelem dspec=ID>
unparsed element (includes tags)</HyPD>
<HyPD psn=HTsem3 SGML pn=unpcontx>
unparsed content (excludes tags)</HyPD>
<HyPD psn=HTsem3 syn pn=unpcont dspec=ID>unpelem[ID]/unpcontx</HyPD>
<HyPD psn=HTsem3 SGML pn=tag dspec=GI>start-tag</HyPD>
<HyPD psn=HTsem3 SGML pn=unpatt dspec=ATTNAME>
attribute value specification</HyPD>
<HyPD psn=HTsem3 SGML pn=KEYWORD>keyword parameter</HyPD>
<!-- HyQ: HYTIME QUERY NOTATION --> <!--A.3 111-->
<!-- HyQ formal definition --> <!--A.3.2 112-->
-- Conventions --
-- 'UC' Reserved name
'Ulc(' Reserved operator name
!lc Useful LTN or PN of user-specified text
@lc Value of attribute defined elsewhere
lc Grammar non-terminal symbol
()?*+| Meta-ops: grouping, opt, orep, rrep, or
'' Delimit meta-ops when used in real syntax
two hyphens Begin and end comments (as in SGML)
--
-- Delimiters --
-- Role String Description
==== ====== ===========
QESC \ Escape
QGRPO ( Group open
QGRPC ) Group close
QLIT " Literal start or end
QLITA ' Literal start or end (alternative)
--
HyQ -- The content of an element that uses the HyQ notation is a node
list that comprises the body of a query. A qdomain and args can
be specified as attributes of the query element. --
qbody
-- Query -- <!--A.3.2.1 112-->
query -- A query can be either a direct query or an indirect query --
(dquery|iquery)
dquery -- Direct query: the query body is specified as a direct argument
of the query --
'Query('qbody qdomain? args?')'
iquery -- Indirect query: the query body is specified indirectly by
reference to the fn attribute of another query element --
'UseQ('@fn qdomain? args?')'
qbody -- Query body --
nl
qdomain -- Query domain: node list whose objects are tested for inclusion
in query result; defaults to DOMTREE if not specified. --
-- Qdomain must be specified if the first arg is nl or oo. --
nl
args -- Query arguments --
(node|nl)*
-- Nodes -- <!--A.3.2.2 112-->
node -- Node --
-- !literal Delimited data
@arg Argument (conforms to HyFunk ltn=arg)
CAND The candidate currently under test in a select function.
CAND has no meaning elsewhere, but survives in nested
queries until stacked when a nested select function
is invoked --
(!literal|'CAND'|@arg|oo|count)
oo -- Object of: resolves IDREF to its object --
-- Object must be valid in context in which oo occurs --
8
count -- Returns the number of quanta in an addressable range.
The range is determined from a node list, all of whose nodes are
data objects that have a common apropsrc (that is, all of the
objects occur within the data of one other object). The range
extends from the first bit combination of the node that is first
in the common containing object, to the last bit combination of
the last node, inclusive. --
'Count('nl @quantum?')'
-- Node List -- <!--A.3.2.3 113-->
nl -- Node list --
('DOMTREE'|'DOMROOT'|assign|nlref|nlops|nldefs|oo|query)
assign -- Assign name to a node list to allow reuse by nl reference
Name is constant for scope of query body and its nested queries --
'Assign('!name nl')'
nlref -- Node list reference: resolves !name to its node list --
-- !name Name assigned to a node list definition to allow reuse
by reference; must be unique within query element.
A node list cannot be referenced within its own body --
'Nlref('!name')'
-- Node List Operations -- <!--A.3.2.4 113-->
nlops -- Node list operations (like set operations) --
(select|create|union|inter|diff)
select -- Selects resulting nodes by testing specified properties
of members of a given node list. The member under test is the
"candidate" (CAND); it is included in resulting node list if
the assertion returns "TRUE". --
'Select('nl assert')'
create -- Create node list: duplicates are not removed --
-- Create() is the empty node list --
-- Keyword 'Create' can be omitted --
'Create'?'('(node|nl)*')'
union -- Union (sum) of node lists: duplicates are removed --
-- Result nl contains nodes that occur in at least one operand nl. --
'Union('nl+')'
inter -- Intersection (product) of node lists (common membership) --
-- Result nl contains nodes that occur in every operand nl. --
'Inter('nl+')'
diff -- Difference between two node lists --
-- Result nl contains nodes that occur in only the 1st operand nl. --
'Diff('nl nl')'
sdiff -- Symmetric difference of node lists (non-common membership) --
-- Result nl contains nodes that occur in only one operand nl. --
'Diff('nl+')'
-- Node List Definitions -- <!--A.3.2.5 113-->
nldefs -- Node list definitions --
(proploc|treeloc|pathloc|listloc|dataloc|hitloc|relloc)
proploc -- Returns nl of data objects containing property of source nodes --
-- Based on proploc element type form:
(node|nl) Locsrc
!qpn Content
@joint Attribute
@apropsrc Attribute
@notprop Attribute --
'Proploc('(node|nl) !qpn @joint? @apropsrc? @notprop?')'
listloc -- Pick nodes from list by position --
-- Based on listloc element type form:
nl Locsrc
mkpair* Content
@overrun Attribute
@set Attribute --
'Listloc('nl mkpair* @overrun? @set?')'
treeloc -- Pick node from tree by position --
-- Based on treeloc element type form:
nl Locsrc
!snzi* Content
@overrun Attribute
@set Attribute
@treecom Attribute --
'Treeloc('nl !snzi* @overrun? @set? @treecom?')'
pathloc -- Pick nodes from tree by paths --
-- Based on pathloc element type form:
nl Locsrc
mkpair* Content
@overrun Attribute
@set Attribute
@treecom Attribute --
'Pathloc('nl mkpair* @overrun? @set? @treecom?')'
relloc -- Locates relatives by selection from addressable ranges --
-- Based on relloc element type form:
nl Locsrc
(node|nl) Root attribute
@relation Attribute
mkpair* Content
@overrun Attribute
@set Attribute --
'Relloc('nl (node|nl) @relation? mkpair* @overrun? @set?')'
dataloc -- Selects portions of each node in the node list --
-- Based on dataloc element type form:
nl Locsrc
@quantum Attribute
@catsrc Attribute
@catres Attribute
mkpair* Content
@overrun Attribute --
'Dataloc('nl @quantum? @catsrc? @catres? mkpair* @overrun? ')'
mkpair -- Pair of axis markers, interpreted as dimspec --
(!snzi !snzi)
hitloc -- Returns node list of data objects like that addressed by a dataloc
whose content is a mrkquery whose qdomain is the dataloc locsrc --
-- Each resulting node contains information about the location of
the match (the "hit"), in marker pairs (like mrkquery). --
match
-- Pattern Match -- <!--A.3.2.6 114-->
match -- Pattern match: Returns a node list where each node contains
one occurrence of the matching text (a "hit"). That is,
one node is returned for each non-overlapping match
in the text in each match domain node. The number
of matches per node has to be within hitrange. --
-- Hit must be word quantum unless "bigmatch" option is supported. --
-- !qltn Qualified lexical type name (need not be HyLex)
@lexord Attribute (overrides @lexord on model element)
Defaults to character set order if "mixcase"
option is supported, otherwise to #SGMLCASE
Lexicographic reordering takes place prior to
quantization or other normalization.
@boundary Attribute (defaults to "ISCIEC") --
'Match('(node|nl) (hylex|!qltn|!literal)
'Oo('@lexord')'? @boundary? hitrange?')'
hylex -- Local HyLex model --
-- Based on HyLex element type:
@HyLex Content (lexical model in HyLex notation)
@norm Attribute
@lexord Attribute --
'HyLex(('@hylex')' @norm? 'Oo('@lexord')'?')'
hitrange -- Hit range: 1 <= MINHITS <= hits <= MAXHITS --
-- Omitted MAXHITS means no upper limit --
-- 1st unzi is MINHITS and 2nd is MAXHITS --
(%unzi %unzi?)
-- Assertion -- <!--A.3.2.7 115-->
assert -- Assertion: evaluates to "TRUE" or "FALSE" --
('TRUE'|'FALSE'|ah|compare|ordered|and|or|not|forall|exists)
ah -- Assertion handler for user-defined assertion:
The IDREF addresses an object that implements the assertion.
The node list contains the operands. --
-- Requires "uassert" option of location address module. --
'Ah('!idref nl')'
forall -- Evaluates to TRUE if the query returns nodes for every node in nl--
-- The argument query is applied to each node, in its order in nl, by
treating the node as the default qdomain of the argument query. --
'Forall('nl query')'
exists -- When a node list or match occurs where an assertion is expected,
it evaluates to TRUE if non-empty, FALSE if empty. --
(nl|match)
-- Comparison -- <!--A.3.2.8 115-->
compare -- Comparison: tests ordering of operands --
-- Operands in nl are data objects or literals --
-- Comparisons are done in a way appropriate for the quantum. --
-- Relations tested are TRUE if:
EQ: all operands are equal
NE: at least two operands are not equal
LT: each operand is less than its successor
LE: each operand is less or equal to its successor
GT: each operand is greater than its successor
GE: each operand is greater or equal to its successor
SS: all operands are same size (same number of quanta)
NS: at least two operands are not same size
ST: each operand is smaller (shorter) than its successor
SE: each operand is smaller (shorter) or equal to its successor
BT: each operand is bigger (longer) than its successor
BE: each operand is bigger (longer) or equal to its successor
HO: each operand holds its successor (proper superstring)
HE: each operand holds or equals its successor (superstring)
IH: each operand is held in its successor (proper substring)
IE: each operand is held in or equals its successor (substring) --
-- Use CAND to operate on the candidate node of the active select. --
('EQ'|'NE'|'LT'|'LE'|'GT'|'GE'|'SS'|'NS'|'ST'|'SE'|'BT'|'BE'
|'HO'|'HE'|'IH'|'IE')'('@quantum? 'Oo('@lexord')'? (node|nl)+')'
ordered -- TRUE if all nodes are data objects that
have a common apropsrc and are ordered within it --
-- OVERLAP TRUE if position of first bit combination of
first node is before next node's first.
NOVERLAP TRUE if each node ends before next begins. --
'Ordered('nl ('OVERLAP'|'NOVERLAP')?')'
-- Boolean Expressions -- <!--A.3.2.9 115-->
and -- True if all its assertions are true --
'And('assert+')'
or -- True if any of its assertions are true --
'Or('assert+')'
not -- True if its assertion is false --
'Not('assert')'
<!-- HyQ element type --> <!--A.3.3 116-->
<!-- HyTime Query -->
<!NOTATION HyQ PUBLIC
"+//ISO/IEC 10744:1992//NOTATION HyTime Query Notation//EN" >
<!ELEMENT HyQ -- HyTime query --
- O (#PCDATA) >
<!ATTLIST HyQ HyTime (nmquery|mrkquery) nmquery
qdomain -- Domain of the query --
-- Multiple is combined into a single tree --
-- Constraint: No HyTime reftype constraints --
IDREFS #IMPLIED -- Default: inherent in query --
notation -- Data content notation --
NAME #FIXED HyQ
delims -- Data content notation delimiter changes --
-- Constraint: names are delimiter role names --
-- Constraint: a given NAME can occur only once --
-- lextype( (NAME, s+, char*),
(s+, NAME, s+, char*)* ) --
CDATA #IMPLIED -- Default: not changed --
fn -- Query function name --
NAME #IMPLIED
usefn -- Fn of another function to which to pass
the args of this one --
NAME #CONREF
args -- Argument string passed to the function --
-- Constraint: 1-999 IDREFS --
-- Constraint: No HyTime reftype constraints --
IDREFS #IMPLIED -- Default: no arguments --
qpnpsn -- QPN property set names --
-- Constraint: searched in order listed --
-- lextype(NOTATION, (s+, NOTATION)*) --
NAMES #IMPLIED -- Default: standard sets --
qltnlmgi -- QLTN lexical model GIs --
-- Constraint: searched in order listed --
-- lextype(GIL) --
NAMES #IMPLIED -- Default: none used --
>
<!-- HyQ examples --> <!--A.3.4 116-->
<!-- 1. Locate all "equation" elements in a document -->
<HyQ qdomain=mydoc>
Select(DOMTREE EQ(Proploc(CAND GI) "equation"))
</HyQ>
<!-- 2. Named query that can be reused with an argument to locate all
elements of a specified element type. -->
<HyQ fn=hasgi>
Select(DOMTREE EQ(Proploc(CAND GI) %1))
</HyQ>
<!-- 3. Locate the second "para" element in the document that occurs
in a "body" element -->
<HyQ qdomain=mydoc>
Listloc(
Select(
Pathloc(Select(DOMTREE EQ(Proploc(CAND GI) "body"))
1 -1 2 -1)
EQ(Proploc(CAND GI) "para") )
2 1 )
</HyQ>
<!-- 4. Same as Query 3, but it uses named Query 2 ("hasgi") -->
<HyQ qdomain=mydoc>
Listloc(
UseQ(hasgi
Pathloc(UseQ(hasgi DOMTREE "body")
1 -1 2 -1)
"para" )
2 1 )
</HyQ>
<!-- MARKER FUNCTIONS --> <!--A.4 117-->
<!-- HyOp: HyTime single operator marker function --><!--A.4.1 117-->
<!ELEMENT HyOp -- HyTime single operator marker function --
-- Represents (i.e., function returns) an axis marker --
-- For use when HyFunk is not available --
-- Constraint: marklists are concatenated into one list --
- O (marklist*) -- Content is "meta" -->
<!ATTLIST HyOp HyTime NAME #FIXED markfun
id ID #IMPLIED -- Default: none --
opname -- Operator name (same as HyFunk) --
(sum|subt|mult|div|avg|max|min|abs|nabs|incr|decr|rand|mod)
#REQUIRED
>
<!-- HyFunk: HyTime function notation --> <!--A.4.2 118-->
<!-- HyFunk syntax and semantics --> <!--A.4.2.1 118-->
Delimiter roles:
Role String Description
==== ====== ===========
FESC \ Escape
FGRPO ( Group open
FGRPC ) Group close
FRNI # Reserved name indicator
FOP @ Operator name indicator
<!-- Syntax of HyFunk (in HyLex notation) -->
<hylex ltn=HyFunk> (fun) </hylex>
<hylex ltn=fun> (startfun, s*, funbody?, s*, endfun) </hylex>
<hylex ltn=startfun> ((mfn|("@",operator)), s*, ")") </hylex>
<hylex ltn=funbody> ((operand, (s+, operand)*)) </hylex>
<hylex ltn=endfun> (")") </hylex>
<hylex ltn=operand> (fun|dimref|pdimref|snzi|arg) </hylex>
<hylex ltn=dimref> ("@",dimop,s*,"(",s*, refbody, s*,")") </hylex>
<hylex ltn=refbody> ((IDREF|("#SCOPE")), axisnext?) </hylex>
<hylex ltn=axisnext> ((s+, GI)?, (s+, NUMBER)?) </hylex>
<hylex ltn=pdimref> ("@",pdimop,s*,"(",s*, prefbody, s*,")") </hylex>
<hylex ltn=prefbody> (IDREF, s+, IDREF, axisnext?) </hylex>
<hylex ltn=mfn> (NAME) </hylex>
<hylex ltn=dimop> (NAME) </hylex>
<hylex ltn=pdimop> (NAME) </hylex>
<hylex ltn=operator> (NAME) </hylex>
<!-- HyFunk element type --> <!--A.4.2.2 119-->
<!-- HyTime Function Notation -->
<!NOTATION HyFunk PUBLIC
"+//ISO/IEC 10744:1992//NOTATION HyTime Function Notation//EN" >
<!ELEMENT HyFunk -- HyTime function notation expression --
-- Represents (i.e., function returns) an axis marker --
- O (#PCDATA) >
<!ATTLIST HyFunk HyTime NAME #FIXED markfun
notation -- Data content notation --
NAME #FIXED HyFunk
delims -- Data content notation delimiter changes --
-- Constraint: names are delimiter role names --
-- Constraint: a given NAME can occur only once --
-- lextype( (NAME, s+, char*),
(s+, NAME, s+, char*)* ) --
CDATA #IMPLIED -- Default: not changed --
fn -- Marker function name --
NAME #IMPLIED
usefn -- Fn of another function to which to pass
the args of this one --
NAME #CONREF
args -- Argument string passed to the function --
-- Constraint: 1-999 tokens, each being a snum
or an IDREF that ultimately locates a snum --
-- lextype((snum|IDREF), (s+, (snum|IDREF))*) --
CDATA #IMPLIED -- Default: no arguments --
>
<!-- HyTime Measurement Unit ratio (HMUratio) --><!--A.4.2.3 120-->
<HyFunk fn=HMUratio>@div(@mult(%1 @qcnt(#SCOPE %3))%2)</HyFunk>
<!-- Example of HMUratio use in one dimension, with a ratio of 3/2 -->
<projectr><extent><dimspec><marklist>
<HyFunk usefn=HMUratio args="3 2">
</projectr>
<!-- MEASUREMENT --> <!--A.5 120-->
<!-- Useful Standard Measurement Units --> <!--A.5.1 120-->
<!-- Measurement Units -->
<!NOTATION gquantum PUBLIC -- Generic Quantum --
"+//ISO/IEC 10744//NOTATION Virtual Measurement Unit//EN" >
<!NOTATION SIsecond PUBLIC -- Time --
"+//ISO/IEC 10744//NOTATION Systeme International second//EN" >
<!NOTATION SImeter PUBLIC -- Length --
"+//ISO/IEC 10744//NOTATION Systeme International meter//EN" >
<!NOTATION virtime PUBLIC -- Virtual Time Unit --
"+//ISO/IEC 10744//NOTATION Virtual Measurement Unit//EN" >
<!NOTATION virspace PUBLIC -- Virtual Space Unit --
"+//ISO/IEC 10744//NOTATION Virtual Measurement Unit//EN" >
<!-- Useful measurement domain definitions --> <!--A.5.2 121-->
SGML formal public identifier:
"ISO/IEC 10744:1992//TEXT Useful Measurement Domain Definitions//EN"
<!-- Generic quantum --> <!--A.5.2.1 121-->
<measure smu=gquantum>
<granule gn=quantum gd=" 1 1 GQUANTUM">
<granule gn=bit-combination gd=" 1 1 quantum">
<granule gn=token gd=" 1 1 quantum">
<granule gn=node gd=" 1 1 quantum">
<granule gn=cell gd=" 1 1 quantum">
</measure>
<!-- Virtual time --> <!--A.5.2.2 121-->
<measure smu=virtime>
<granule gn=vtu gd=" 1 1 VIRTIME">
</measure>
<!-- Virtual space --> <!--A.5.2.3 121-->
<measure smu=virspace>
<granule gn=vsu gd=" 1 1 VIRSPACE">
</measure>
<!-- Systeme International second --> <!--A.5.2.4 122-->
<measure smu=SIsecond>
<granule gn=ysec gd=" 1 1000 zsec">
<granule gn=zsec gd=" 1 1000 asec">
<granule gn=asec gd=" 1 1000 fsec">
<granule gn=fsec gd=" 1 1000 psec">
<granule gn=psec gd=" 1 1000 nsec">
<granule gn=nsec gd=" 1 1000 usec">
<granule gn=usec gd=" 1 1000 msec">
<granule gn=msec gd=" 1 10 csec">
<granule gn=csec gd=" 1 10 dsec">
<granule gn=dsec gd=" 1 10 second">
<granule gn=SMPTE-50 gd=" 1 50 second">
<granule gn=V1250 gd=" 1 50 second">
<granule gn=NTSC gd=" 1 30 second">
<granule gn=SMPTE-240M gd=" 1 30 second">
<granule gn=SMPTE-30 gd=" 1 30 second">
<granule gn=SMPTE-30-drop gd=" 100 2997 second">
<granule gn=SMPTE-25 gd=" 1 25 second">
<granule gn=PAL gd=" 1 25 second">
<granule gn=SECAM gd=" 1 25 second">
<granule gn=European gd=" 1 25 second">
<granule gn=SMPTE-24 gd=" 1 24 second">
<granule gn=motion-picture gd=" 1 24 second">
<granule gn=SMPTE-24-drop gd=" 100 2396 second">
<granule gn=PC-tick gd=" 10 182 second">
<granule gn=second gd=" 1 1 SISECOND">
<granule gn=dasec gd=" 10 1 second">
<granule gn=hsec gd=" 10 1 dasec">
<granule gn=ksec gd=" 10 1 hsec">
<granule gn=Msec gd=" 1000 1 ksec">
<granule gn=Gsec gd=" 1000 1 Msec">
<granule gn=Tsec gd=" 1000 1 Gsec">
<granule gn=Psec gd=" 1000 1 Tsec">
<granule gn=Esec gd=" 1000 1 Psec">
<granule gn=Zsec gd=" 1000 1 Esec">
<granule gn=Ysec gd=" 1000 1 Zsec">
<granule gn=minute gd=" 60 1 second">
<granule gn=quarter-hour gd=" 15 1 minute">
<granule gn=half-hour gd=" 30 1 minute">
<granule gn=hour gd=" 60 1 minute">
<granule gn=day gd=" 24 1 hour">
<granule gn=week gd=" 7 1 day">
<granule gn=fortnight gd=" 2 1 week">
<!-- Year and the granules based on it might not be accurate enough
for some applications. -->
<granule gn=year gd="3652422 10000 day">
<granule gn=decade gd=" 10 1 year">
<granule gn=millenium gd=" 1000 1 year">
</measure>
<!-- Systeme International meter --> <!--A.5.2.5 122-->
<measure smu=SImeter>
<granule gn=ym gd=" 1 1000 zm">
<granule gn=zm gd=" 1 1000 am">
<granule gn=am gd=" 1 1000 fm">
<granule gn=fm gd=" 1 1000 pm">
<granule gn=pm gd=" 1 1000 nm">
<granule gn=angstrom gd=" 1 10 nm">
<granule gn=nm gd=" 1 1000 um">
<granule gn=um gd=" 1 1000 mm">
<granule gn=mm gd=" 1 10 cm">
<granule gn=cm gd=" 1 10 dm">
<granule gn=dm gd=" 1 10 meter">
<granule gn=meter gd=" 1 1 SIMETER">
<granule gn=dam gd=" 10 1 meter">
<granule gn=hm gd=" 10 1 dam">
<granule gn=km gd=" 10 1 hm">
<granule gn=Mm gd=" 1000 1 km">
<granule gn=nautical-mile gd=" 1852 1 meter">
<granule gn=Gm gd=" 1000 1 Mm">
<granule gn=AU gd=" 1 206265 parsec">
<granule gn=Tm gd=" 1000 1 Gm">
<granule gn=lightyear gd=" 100 326 parsec">
<granule gn=Pm gd=" 1000 1 Tm">
<granule gn=parsec gd=" 3086 1 Tm">
<granule gn=Em gd=" 1000 1 Pm">
<granule gn=Zm gd=" 1000 1 Em">
<granule gn=Ym gd=" 1000 1 Zm">
<granule gn=microinch gd=" 1 1000 milliinch">
<granule gn=milliinch gd=" 1 1000 inch">
<!-- Point and pica are the rounded versions commonly used in computer
systems and might not be accurate enough for some applications. -->
<granule gn=point gd=" 1 12 pica">
<granule gn=pica gd=" 1 6 inch">
<granule gn=barleycorn gd=" 1 3 inch">
<granule gn=nail gd=" 1 16 yard">
<granule gn=inch gd=" 254 100 cm">
<granule gn=thumb gd=" 1 1 inch">
<granule gn=hand gd=" 4 1 inch">
<granule gn=Roman-foot gd=" 1164 100 inch">
<granule gn=foot gd=" 12 1 inch">
<granule gn=Greek-foot gd=" 1244 100 inch">
<granule gn=Northern-foot gd=" 11 10 foot">
<granule gn=cubit gd=" 18 1 inch">
<granule gn=Sumerian-cubit gd=" 495 10 cm">
<granule gn=royal-cubit gd=" 2062 100 inch">
<granule gn=yard gd=" 3 1 foot">
<granule gn=ell gd=" 5 4 yard">
<granule gn=fathom gd=" 6 1 foot">
<granule gn=perch gd=" 11 2 yard">
<granule gn=pole gd=" 1 1 perch">
<granule gn=rod gd=" 1 1 perch">
<granule gn=chain gd=" 66 1 foot">
<granule gn=furlong gd=" 220 1 yard">
<granule gn=quarter-mile gd=" 440 1 yard">
<granule gn=mile gd=" 1760 1 yard">
<granule gn=league gd=" 3 1 mile">
</measure>
<!-- Other standard measurement units --> <!--A.5.3 123-->
<!NOTATION SIkg PUBLIC -- Mass --
"+//ISO/IEC 10744//NOTATION Systeme International kilogram//EN" >
<!NOTATION SIkelvin PUBLIC -- Thermodynamic Temperature --
"+//ISO/IEC 10744//NOTATION Systeme International kelvin//EN" >
<!NOTATION SIcd PUBLIC -- Luminous Intensity --
"+//ISO/IEC 10744//NOTATION Systeme International candela//EN" >
<!NOTATION SIampere PUBLIC -- Electric Current --
"+//ISO/IEC 10744//NOTATION Systeme International ampere//EN" >
<!NOTATION SImole PUBLIC -- Amount of Substance --
"+//ISO/IEC 10744//NOTATION Systeme International mole//EN" >
<!NOTATION SIradian PUBLIC -- Plane Angle --
"+//ISO/IEC 10744//NOTATION Systeme International radian//EN" >
<!NOTATION SIsr PUBLIC -- Solid Angle --
"+//ISO/IEC 10744//NOTATION Systeme International steradian//EN" >
<!-- Example declaration for SI derived unit -->
<!NOTATION SIC PUBLIC -- Celsius Temperature --
"+//ISO/IEC 10744//NOTATION Systeme International degree Celsius//EN" >